<!DOCTYPE html>
<html lang="zh-cn">
  <head>
    <meta charset="UTF-8">
    <title>Sucha's Blog - Archive for May, 2016</title>
    <meta name="generator" content="MarkdownProjectCompositor.lua">
    <meta name="author" content="Sucha">
    <meta name="keywords" content="suchang, programming, Linux, Lua">
    <meta name="description" content="Sucha's blog">
    <link rel="shortcut icon" href="../images/ico.png">
    <link rel="stylesheet" type="text/css" href="../styles/blog.css">
    <link rel="stylesheet" type="text/css" href="../styles/prism.min.css">
    <style id="site_theme"></style>
  </head>
  <body>
    <div id="body">
      <div id="text">
	   <!-- Page published by cmark-gfm begins here --><h1>Sucha's Blog ~ Archive for May, 2016</h1>
<p><a id="p1"></a></p>
<div class="date">16年5月8日 周日 20:36</div>
<h2>思绪</h2>
<p>这思绪像风<br>
有时温暖湿润<br>
有时清冷异常<br>
总是不经意间就碰上<br>
还未来得及琢磨<br>
便眼睁睁地看着另外一个我<br>
被它带到不知名的地方<br></p>
<div class="category"><a href="CategoryLife.html">CategoryLife</a> / <a href="2016-05.html#p1">Permalink</a> / <a href="https://github.com/lalawue/homepage/discussions/categories/blog" target="_blank">Discussion</a></div>
<!-- date: 2016-05-08T20:36:25+0800 -->
<p><a id="p0"></a></p>
<div class="date">16年5月4日 周三 00:50</div>
<h2>稳定版的 m_tunnel</h2>
<p>之前的 <a href="https://github.com/lalawue/m_tunnel">m_tunnel</a> 不稳定，有多个原因，最主要的，是由于只用一个 tcp 连接
local 跟 remote，免不了协议、数据分割，两边的 socket 状态不容易保证同步，
比如 local 的关闭了，remote 的也要同步关闭，反过来也要保证一样。</p>
<p>之前的处理方法，是用了好几个变量保证状态，搞得好复杂，其实也没有对上，所
以很容易跑飞。现在的处理方法，是 remote 跟着 local 变，local 请求后
remote 才创建 socket 去 connect，双方使用一个几乎不会重复的 magic number
来对标，留着 chann_id 作为资源索引值。</p>
<p>双方不管谁先关闭 socket，都会发送消息给对方，但如果对方的资源池里面没有
对应的 magic number 了，则这个资源就已经被释放了，也就保证了同步，类似虚
拟链路一样。</p>
<p>另外一个问题，比较不容易发现，因为自用的是 MacOSX，默认设置 listen 的
socket 为非阻塞的之后，后面 accept 的 socket 也都是非阻塞的。但是 linux
下面不是这样，需要单独对每个 accept 的 socket 设置为非阻塞才行。</p>
<p>这个版本还将 dns 单独出来了一个线程，避免阻塞主循环的消息接收发送，不过
呢感觉 dns 不太稳定呀。</p>
<p>目前自测单用户是没啥问题了，只是缺乏加密，这个放到 TODO 里面，不定非要完
成了。</p>
<p>五一去了罗浮山，又是马大哈错过了一班整点车，然后又遇到堵车了，到了惠州总
站去罗浮山景区又堵，看到缆车那里排了 2 个小时的长队，于是没上山顶，若是
自己爬上去的话，售票员说要 5 个小时。只好走马观花，看看人潮，把五一就这
样消费掉了。</p>
<p>再找找看有啥好玩的项目吧。</p>
<div class="category"><a href="CategoryProgramming.html">CategoryProgramming</a> / <a href="2016-05.html#p0">Permalink</a> / <a href="https://github.com/lalawue/homepage/discussions/categories/blog" target="_blank">Discussion</a></div>
<!-- date: 2016-05-04T00:50:41+0800 -->
<!-- Page published by cmark-gfm ends here -->
  <div id="foot">2004-<script>var d = new
	Date();document.write(d.getFullYear())</script> &copy;
	Sucha. Powered by MarkdownProjectCompositor.
  </div>
  </div><!-- text -->
  <div id="sidebar">
  </div><!-- sidebar -->
  <script src="../js/prism.min.js" async="async"></script>
  <script src="../js/blog_sidebar.js"></script>
  </div> <!-- body -->
</body>
</html>